//package com.timothy.remote.client;
//
//import javax.servlet.ServletRequest;
//import javax.servlet.ServletResponse;
//import javax.servlet.http.Cookie;
//import javax.servlet.http.HttpServletRequest;
//
//import org.apache.commons.lang3.StringUtils;
//import org.apache.shiro.SecurityUtils;
//import org.apache.shiro.web.servlet.AdviceFilter;
//import org.apache.shiro.web.util.WebUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
///**
// * 用于跨域共享session,那个应用需要与登录应用共享session，就开放此filter
// */
//public class CasFilter extends AdviceFilter {
//
//	private final static Logger log = LoggerFactory.getLogger(CasFilter.class);
//
//	private String casServerURL; // 重定向到管理平台，该地址用于获取sessionId
//	//private String domain; // filter应用的域名
//
//	@Override
//	protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception {
//		boolean hasSyn = (null == SecurityUtils.getSubject().getSession().getAttribute("hasSyn") ? false
//				: (Boolean) SecurityUtils.getSubject().getSession().getAttribute("hasSyn"));
//		if (SecurityUtils.getSubject().isAuthenticated() || hasSyn) {// 当用户已经登录或者从session中取得的hasSyn为true，说明已经同步session，不需要再重定向
//			return true;
//		}
//		String jsid = WebUtils.getCleanParam(request, "jsid");
//		HttpServletRequest httpRequest = WebUtils.toHttp(request);
//		String url = httpRequest.getRequestURL().toString();
//		url = StringUtils.remove(url, httpRequest.getContextPath());
//		if (StringUtils.isNotBlank(jsid)) {// 如果jsid不为空，说明是通过管理平台重定向回来的，将拿到的sessionId写回到自己域名下。
//			Cookie cookie = new Cookie("sid", jsid);
//			cookie.setDomain("");
//			cookie.setPath("");
//			WebUtils.toHttp(response).addCookie(cookie);
//			WebUtils.issueRedirect(request, response, url);
//			log.info("redirect : " + url);
//			return false;
//		}
//		String uri = casServerURL + "?service=" + url;
//		WebUtils.issueRedirect(request, response, uri);
//		log.info("redirect : " + uri);
//		return false;
//	}
//
//	@Override
//	protected void postHandle(ServletRequest request, ServletResponse response) throws Exception {
//		super.postHandle(request, response);
//	}
//
//	public void setCasServerURL(String casServerURL) {
//		this.casServerURL = casServerURL;
//	}
//
//	// public void setDomain(String domain) {
//	// this.domain = domain;
//	// }
//
//}